#pragma once

#include "Types.h"
#include "GameManager.h"
#include "RefCount.h"
#include "SceneObject.h"

class CGameManager;

class CCameraControl : public CSceneObject, public TRefCount<CCameraControl>
{
public:
	CCameraControl(void);
	~CCameraControl(void);

	void update(f32 frameDeta);

	// movement functions
	void turnRight(f32 i);
	void turnLeft(f32 i);
	void turnUp(f32 i);
	void turnDown(f32 i);
	void setPosition(vector3df pos);
	void move(vector3df vel);
	
	void registerCallbacks();
	
	
	vector3df getPosition(void)			{ return this->mCamera->getPosition(); }
	DECLARE_GET_MEMBER(vector3df, Direction)
private:
	CGameManager			*mEngine;
	ICameraSceneNode		*mCamera;

	// movement values
	f32 mRotationX;
	f32 mRotationY;
	vector3df mAbsoluteDirection;

	// movement config settings
	f32 mCameraLookSpeed;
	f32 mCameraMoveSpeed;
};

